
The Fragment Operator is used whenever you want to break
up an object into fragments, essentially causing destruction or disintegration
effects. A selected object is converted into a particle emitter with each
vertex on the object acting as a source for fragment emission. Every particle
emitter acts as a sensor, each with its own Threshold value, and when
the sensor contains a higher value than the set Threshold value, it is
turned into a fragment.
When objects explode into fragments, particles are used to control the
dynamic behavior of the chunks flying around. Each object fragment (a
set of polygons) is represented by one particle. Everything this particle
does, is also applied to the fragment. Spin, movement and collision detection
are all handled by the underlying particle information and not the actual
set of polygons that represent the object fragment unless otherwise told
to by the Shape
Collision Operator.
To see the fragments in the viewports, choose Show Mesh in the Master DynamicSet.
ON - (Bool) This input data
stream determines whether the operator is considered 'on' or 'off'. You
can connect other operators to this input channel such as a Bool
Helper to activate/deactivate the whole operator.
Time - (Time) This input data stream is used to define the local
time for the operator when the user wants to override the default system
time.
Particle - (Particle) This input data stream reads in the currently
selected particle group that is to be given a standard shape. The data
stream MUST be connected and will be highlighted yellow,
if it is not.
Life Span - (Life Span) This input data stream is used to override
the Life Span spinner value in the Fragment rollout.
Speed - (Speed) This input data stream is used to override the
Speed spinner value in the Fragment rollout.
Direction - (Direction) This input data stream is used to send
a directional vector to the fragments to give them a direction to travel.
Spin - (Spin) This input data stream is used to provide the angular
direction value for the particles to use for their motion.
Mass - (Mass) This input data stream is used to give a physical
mass to the particle fragments. This can be useful when you are breaking
an object since you can tell the larger fragments to be heavier than the
smaller ones.
Alignment - (Alignment) This input data stream is used to align
the fragments with a selected Node's alignment (fed in through a Node
Helper or Particle
Data Helper).
Threshold - (Scalar) This input data stream is used to override
the Threshold spinner value in the Fragment rollout.
Variation - (Scalar) This input data stream is used to override
the Variation [%] spinner value that is used to add some randomness to
the fragmentation order within the Fragment rollout.
Fragmentation Mask - (Texture Map) This input data stream is for
future usage (i.e. - it is not currently active) and will be used to override
the texture map mask that controls the fragmentation order within the
Fragment rollout.
Fragmentation Mask ON - (Bool) This input data stream is used
to override the on/off state of the Fragmentation Mask toggle within the
Fragment rollout. A True condition will turn the mask on, while a False
condition will turn the mask off.
Mask Gradient - (Alpha Gradient) This input data stream is for
future usage (i.e. - it is not currently active) and will be used to override
the gradient ramp that controls the fragmentation order within the Fragment
rollout.
Use Light - (Bool) This input data stream is used to override
the Use Lights checkbox state within the Fragment rollout.
Type - (Integer) This input data stream takes an integer value
that represents the fragmentation algorithm the particles will use. Valid
input values are 0 through 2, where:
None Fragments - (Bool)
This input data stream is used to override the No Fragments checkbox state
within the Fragment rollout.
Smoothing Angle - (Angle) This input data stream is used to override
the Smoothing Angle spinner value in the Fragment rollout.
Smoothing Radius - (Scalar) This input data stream is used to
override the Radius [%] spinner value in the Fragment rollout.
Count - (Integer) This input data stream is used to override the
Count spinner value in the Fragment rollout.
From To - (Integer) This input data stream takes an integer value
that represents the fragmentation order the particles will use. Valid
input values are 0 through 5, where:
Life Variation - (Scalar)
This input data stream is used to override the Variation [%] spinner value
that is used to add some randomness to the Life Span within the Fragment
rollout.
Speed Variation - (Scalar) This input data stream is used to override
the Variation [%] spinner value that is used to add some randomness to
the fragment speed within the Fragment rollout.
Motion Inheritance - (Scalar) This input data stream is used to
override the M. Inheritan [%] spinner value within the Fragment rollout.
Track Motion Inheritance - (Bool) This input data stream is used
to override the Track Motion Inheritance checkbox state within the Fragment
rollout.
Thickness - (Scalar) This input data stream is used to override
the Thickness [%] spinner for the fragments within the Fragment rollout.
Thickness Size Dependence - (Bool) This input data stream is used
to override the Thickness Size Dependence checkbox state within the Fragment
rollout.
Thickness Exclude Closed Fragments - (Bool) This input data stream
is used to override the Exclude Closed Fragments checkbox state within
the Fragment rollout.
Outside ID - (Integer) This input data stream is used to override
the Outside ID spinner for the fragments within the Fragment rollout.
Edges ID - (Integer) This input data stream is used to override
the Edge ID spinner for the fragments within the Fragment rollout.
Backside ID - (Integer) This input data stream is used to override
the Backside ID spinner for the fragments within the Fragment rollout.
Alignment Correction - (Bool) This input data stream is used to
override the Alignment Correction checkbox state within the Fragment rollout.
Remaining Type - (Integer) This input data stream takes an integer
value that represents how the Fragment Operator will manage the Remaining
Mesh. Valid input values are 0 through 2, where:
RThickness - (Scalar) This input data stream is used
to override the Thickness [%] spinner for the remaining mesh within the
Fragment rollout.
ROutside ID - (Integer) This input data stream is used to override
the Outside ID spinner for the remaining mesh within the Fragment rollout.
REdges ID - (Integer) This input data stream is used to override
the Edge ID spinner for the remaining mesh within the Fragment rollout.
RBackside ID - (Integer) This input data stream is used to override
the Inside ID spinner for the remaining mesh within the Fragment rollout.
All Fragged Particles Die - (Bool) This input data stream is used
to override the All Faces Fragged then Die checkbox state within the Fragment
rollout.
TS On - (Bool) This input data stream is used to override the
Tessellation on/off toggle switch within the Tessellate rollout. A True
condition will turn the mask on, while a False condition will turn the
mask off.
TS Face Type - (Integer) This input data stream takes an integer
value that represents to what kind of geometry the tessellation algorithm
will be applied in order to subdivide the emitter. Valid input values
are 0 and 1, where:
TS Type - (Integer) This input data stream takes an integer value that represents the tessellation algorithm to be used to subdivide the emitter. Valid input values are 0 and 1, where:
TS Tension - (Scalar) This
input data stream is used to override the Tension spinner within the Tessellate
rollout.
TS Iteration - (Integer) This input data stream takes an integer
value that represents the tessellation iterations to be used to subdivide
the emitter. Valid input values are 0 and 3, where:
TS Update Options - (Integer) This input data stream takes an integer value that represents how the tessellation will be handled. Valid input values are 0 and 1, where:
Break Visible Edges Only
- (Bool) when this input is active, the fragment node will break the mesh
at visible edges, only.
Random Seed - (Integer) inputs a random seed number that should
be used as a start value for all random functions within this Node.
Crack Spread - (Scalar) defines the maximum radius of the area
to distribute cracks of a pre-broken mesh over its surface. Within this
radius the cracks will be expanding in a linear manner, unless the Spread
Gradient will be modified from its default value.
Spread Gradient - (Alpha Gradient) controls the amount of "pre-tension"
or "pre-loaded" explosive power of an object. Moving the black
color from its default first position (left hand side) towards the right
hand position will add explosive power to the remaining mesh parts. Doing
so will make the "cracks" expand beyond the radius by adding
the radius value to each new added fragmented piece.
Spread Time - (Frame) specifies the time it takes to fully brake
the object until the specified radius is reached.
Segments - sets the amount of segments to create (subdivisions
of the mesh)
RSegments - sets the amount of segments to create for the remaining
mesh (subdivisions of the mesh)
Born Particle - (Particle)
This output data stream sends particle data for newly created particle
fragments to other operators. Every particle birth will activate all rules
connected to this particle data stream. As a result, this can be used
to directly assign a value to the particle.
Fragment Level - (Scalar) This output data stream represents the
percentage of the object hasn't been converted into fragments. So the
value it projects before the selected node fragments is 1.0 (meaning the
object is intact), and then as portions break off, the value decreases
toward 0.0.

Frag. Mask - The Fragment
Operator is able to use any map or material to control the object fragmentation
in detail. Like other particle effects in thinkingParticles, the Fragment
Operator analyzes the grayscale values of the map assigned to this mask.
A pure white color will assign a value of 1.0 to nearby particle emitter
vertices and a black color will assign a value 0.0 to nearby particle
emitter vertices. All values in between will be assigned a grayscale value
relative to their brightness. Although RGB images will work for this effect,
it is recommended that you use only grayscale images to control the object
fragments.
The gradient beneath the Mask Map selector controls the fragmentation order
when no mask is used. If an image map or procedural material is applied,
the gradient is used as a placeholder for the values in the map or material.
As an example, imagine a checker bitmap. Where the checker pattern is
white, those areas of the object will fragment as soon as you animate
the Threshold spinner value down, while the black areas of the checker
pattern will remain until the Threshold value is set to 0.0. Any grayscale
values in between will break off when their relative values exceed that
of the Threshold spinner.
You MUST animate the Threshold spinner's value from 1.0 down to 0.0 to make an object break apart. This will break parts of the object away where the particle emitter vertices contain higher values than the actual Threshold value. If you do not animate the Threshold value, a static fragmented situation will be created.
Variation [%] - This spinner adds some randomness to
the fragmentation order. Usually the object breaks apart based on the
threshold values stored at the vertices of the emitter. This spinner changes
this stored values randomly and this can create a more realistic, chaotic
look.
Threshold - Change this spinner's value, or better, animate this
value to break off fragments based on their grayscale value when it becomes
greater than the Threshold spinner's value. As shown below, the sphere
being used as a fragment generator has a checker map applied to it. As
the Threshold spinner is animated, the fragments within the white area
break off first, and are followed by the black areas when the Threshold
spinner value reaches 0.0.

By default all of the emitter vertices receive a fragmentation Threshold value of 1.0 and this is altered by the map or gradient applied.
This is one way to control the fragmentation - there is another that
uses lighting to help determine fragmentation. You can also control the
emitter’s threshold value by illuminating the object's surface with a
standard 3ds Max light. When the object’s surface illumination (the particle
emitter) gets to a certain Threshold value, the emitter becomes an object
fragment. This makes it easy to create object fragments in only those
areas that are brightly lit - like by a laser blast. That is what the
next section of tools handles.
Use Lights - Activate this checkbox when you want the Fragment
Operator to control the fragmentation algorithms with standard 3ds Max
lights. The Threshold value sets the amount of illumination that is needed
to create object fragments. A Threshold value of 1.0 creates object fragments
only when there is a really bright spot on the objects surface.
REM. - To remove a light from the listbox, highlight it and then
click this button.
PICK - To add a light to the listbox and use it to determine emitter
fragmentation, click on this button, then click on the light sources within
your 3ds Max viewports. You can also use the H-key to
bring up the Select By Name dialog to choose lights in your scene.
Crack Spreading - sets the maximum radius of the area to distribute
cracks of a pre-broken mesh over its surface. Within this radius the cracks
will be expanding in a linear manner, unless the Spread Gradient will
be modified from its default value.
Spread Gradient - controls the amount of "pre-tension"
or "pre-loaded" explosive power of an object. Moving the black
color from its default first position (left hand side) towards the right
hand position will add explosive power to the remaining mesh parts. Doing
so will make the "cracks" expand beyond the radius by adding
the radius value to each new added fragmented piece.
Spread Time - specifies the time it takes to fully brake the object
until the specified radius is reached.
Group - Before you create
any fragments, think about where you want to store them. From the Group
dropdown list you can select any particle group that should be used to
store the particle fragments.
No Fragments - Activate this checkbox to enter non-fragment mode.
Fragments aren't actually created, however this option can be a lifesaver
when you want to see the order in which your object activates its fragments.
This can also be a tremendous time saver for compositing tasks.
Break Visible Edges Only - when checked, visible edges will be
broken into fragments, only.
Single Faces - Choose this option to use all triangles as independent
object fragments. This option is useful when you want to simulate dust
or very small debris. The other two options - Smooth and Distance and
Count allows you to control the amount and size of the object fragments.
Smooth and Distance - When Smooth and Distance is chosen, two
additional parameters are also enabled (Smoothing Angle
and Radius [%]). All fragments with the same surface
smoothing angle (set in the Smoothing spinner) will Use the size (radius)
as set in the Radius [%] parameter.
Smoothing Angle - This spinner controls the size of the fragments
when Smooth and Distance is checked. All fragments with
the same surface smoothing angle will then use the size (radius) as set
in the Radius [%] parameter to create fragments.
Radius [%] - This spinner sets the radius to be used for controlling
fragments when Smooth and Distance is checked. Radius
[%] is measured as a percentage of the object’s bounding box size, so
a larger percentage will result in bigger fragment chunks.
Count - When this option is selected, the Count
spinner beneath the From To dropdown list is activated. As a result, you
can set a specific number of fragments to be created.
Count - This spinner's value controls the minimum number of fragments
that should be created. However, you should be aware that this parameter
also performs additional object tessellation in cases where the mesh isn't
detailed enough to create the number of chunks. In these cases, the mesh
will be adaptively subdivided to accommodate the Count value.
Random Seed - sets a random seed for the Fragment node, so that
each Fragment node behaves differently when using variations.
From To - This dropdown list lets you choose how the
fragmentation process should start and evolve. The reference for up/down
and left/right references the local object axis.

Life Span - This spinner
sets the particle life for each fragment. All fragments get the same life
time when they are born.
Variation [%] - This spinner adds some random variation to the
Life Span of each fragment created by this operator. The Variation [%]
value is a percentage value that is added/subtracted to the original Life
Span value. So if the Life Span is set to 2 seconds and the Variation
[%] spinner is set to 50%, the resulting particle fragments have a maximum
age of between 1 and 3 seconds.
Speed - The particle speed setting of the Fragment operator sets
the particle velocity for each fragment. All fragments inherit the same
speed value when they are born.
Variation [%] - This spinner adds some random variation to the
Speed value for each fragment created by this operator. The Variation
[%] value is a percentage value that is added/subtracted to the original
Speed value. So if the Speed is set to 10 and the Variation [%] spinner
is set to 50%, then the resulting particle fragments will have a maximum
speed of between 5 and 15.
M Inheritan [%] - When the particle emitter is in motion before
disassembling, this spinner tells the fragments how much of the original
object motion they should inherit as they begin to break off. As this
spinner represents a percentage, a value of 100% tells the particles that
they should inherit 100% of the motion of the object's trajectory as it
breaks off, while smaller values cause the fragments to only inherit a
portion of the original motion. This can be useful when doing effects
like meteors where you want the chunks to continue to trail behind as
they break off.
Track Motion Inheritance - When this checkbox is active, it lets
you force the particles to receive the motion inheritance information
all the time. Imagine a spinning object; to make the particles follow
the spinning motion you would turn this option on.
Thickness [%] - This spinner
sets the thickness of the fragmented geometry. At a value of 0.0, the
fragments are single-sided with no thickness. When greater than zero,
the fragments are extruded inward at fragmentation-time by the amount
specified to produce a solid appearance. When using thickness in your
fragments, the inner and outer surfaces of the fragments use identical
smoothing; and this smoothing is picked up from the object-based emitter.
Worth noting is that the edges of the fragments are not smoothed.
Be aware that using this spinner can double or quadruple the number of faces.
Thickness Size Dependen
- Activate this checkbox when you want some thickness variation in the
fragments. Larger chunks will get the full Thickness [%] while smaller
fragments will get less thickness.
Segments - sets the amount of segments to create (subdivisions
of the mesh)
Exclude Closed Fragments - Activate this checkbox when you want
to avoid applying thickness to fragments that already have thickness.
Outside ID - This spinner lets you assign a Material ID that should
be used on the outside faces of the fragments. In order to do this, be
sure to assign a Multi/Sub-Object material to the selected emitter.
Edge ID - This spinner lets you assign a Material ID that should
be used on the newly created edge faces of the fragments. In order to
do this, be sure to assign a Multi/Sub-Object material to the selected
emitter.
Backside ID - This spinner lets you assign a Material ID that
should be used on the newly created inner faces of the fragments. In order
to do this, be sure to assign a Multi/Sub-Object material to the selected
emitter.
Alignment Correction - No one knows how the particle fragments
may be rotated relative to one another through any other operator in thinkingParticles.
To ensure that the fragments are aligned along their original surface
at birth, activate this checkbox.
The Fragment Operator is unique when it gets into creating particle
fragments. In contrast to other standard 3ds Max particle
systems, Fragment can also handle the remaining mesh
of the fragmented object. The remaining mesh refers to the geometry that
still appears as the fragments break off. The options are None, Hollow
and Solid.
None: When this option is selected, the Fragment Operator will
not have a remaining mesh. As such, the entire object will disappear,
and only as the emitter's vertices exceed the Threshold spinner value,
they appear as chunks. This might look odd, but in combination with the
No Fragments option you may use this for perfect compositing.
Hollow: When this option is selected, you will be left with a
hollow remaining mesh. At the beginning of the fragmentation, the object
appears solid, and then pieces begin to break off. The result is that
this effect looks like the object is exploding into little pieces over
time .
Solid: When this option is selected, the remaining mesh will continue
to be a complete solid object. This option is useful when you want to
get an effect that looks like as the fragments are peeled off or blown
off. With clever use of different Material IDs you can also create an
effect of breaking a hull or battle damage to a surface where debris flies
off and yet you still have another raw surface beneath.
Thickness [%] - This spinner sets the thickness of the remaining
mesh. Values greater than 0.0 produce a remaining mesh surface that is
incrementally smaller than the original emitter surface (to enhance the
peeling effect when Solid is chosen for the Remaining
Mesh).
Segments - sets the amount of segments to create (subdivisions
of the mesh)
Outside ID - This spinner lets you assign a Material ID that should
be used on the outside faces of the remaining mesh. In order to do this,
be sure to assign a Multi/Sub-Object material to the selected emitter.
Edge ID - This spinner lets you assign a Material ID that should
be used on the newly created edge faces of the remaining mesh. Understand
that the only way to see this material is when you choose Hollow
as the remaining mesh algorithm. In order to do this, be sure to assign
a Multi/Sub-Object material to the selected emitter.
Inside ID - This spinner lets you assign a Material ID that should
be used on the newly created inner faces of the remaining mesh. Understand
that the only way to see this material is when you choose Hollow
as the remaining mesh algorithm. In order to do this, be sure to assign
a Multi/Sub-Object material to the selected emitter.
All Faces Fragged then Die - Check this option to prevent “refragmentation”.
Usually, whenever a True condition is sent to the ON input data stream,
the fragmentation is started again. In some situations this might not
be the look you want to get and so you would activate this checkbox to
prevent this particular effect from starting again.

ON - If this button is checked, the object is tessellated by a
function that works like the Tessellate modifier in 3ds Max. The tessellation
is applied to the whole object. Be aware that each iteration doubles the
number of triangles.
Operate On - These two options specify whether to perform the
tessellation on the triangular faces or on polygonal facets (quads created
by visible edges).
Triangles: When this option is chosen, the tessellation operates
on the selection as a set of triangular faces.
Polygons: When this option is chosen, the tessallation algorithm
divides polygonal facets. For example, using the polygonal method on the
side of a box results in cross-shaped edges using the Edge
method, and X-shaped edges using the Face-Center method.
Edge - This tessellation method divides the face or polygon from
its center point outward to the midpoint of each edge. When applied to
a triangular face, it also divides unselected faces that share edges with
the selected faces.
Face-Center - This tessellation method divides the face from its
center point to the vertex corners.
Tension - This spinner determines if the new faces are flat, concave,
or convex after Edge tessellation. A positive value rounds faces by pushing
vertices outward. A negative value creates concave faces by pulling vertices
inward. A setting of 0 keeps the faces flat. While designed for the Face-Center
algorithm, it also works with the Edge/Polygon method.
Iterations - These options specifies how many times the tessellation
algorithm is applied. For example, setting Iterations to 2 is similar
to clicking the Tessellation button twice in an Editable Mesh.
Update Options -Tessellation is an expensive feature that might
take some time to finish, especially if you use thousands of fragments
within a complex mesh. This group of controls allows you to determine
how the mesh is updated.
Always - Select this option to get immediate updates at all times.
When Rendering - This updates (tessellates) the mesh at render
time only.